// 用户表单验证规则
// 导入验证规则所需的包
const joi = require('joi')

// 定义用户名密码验证规则
const username = joi.string().alphanum().min(1).max(16).required() // 为字符串，数字字母组合，长度6-16，必填
const password = joi.string().pattern(/^[\S]{6,18}$/).required() // 自定正则表达式

// 定义id,nickname,email的验证规则
const id = joi.number().integer().min(1).required() // 为整数数字，最小为1，必填
const nickname = joi.string()
const email = joi.string().email()

// 定义头像的验证规则
const avatar = joi.string().dataUri().required() // 字符串，base64格式，必填

// 文章分类的验证规则
const name = joi.string().required()
const alias = joi.string().alphanum().required()

//  定义验证登录和注册表单数据的规则对象
exports.reg_login_schema = {
    // 表示需要对req.body里面的数据进行验证
    body:{
        username,password
    }
}

// 定义更新用户信息的验证对象
exports.update_userinfo_schema = {
    body:{
        id,nickname,email
    }
}

// 重置密码的验证对象.
exports.updete_pwd_scheam = {
    body:{
        id,
        oldPwd:password,
        // joi.ref('oldPwd')：表示与oldPwd保持一致
        // joi.not()：想当与取反
        // concat():表示合并校验规则
        newPwd:joi.not(joi.ref('oldPwd')).concat(password)
    }
}

// 头像的验证对象
exports.update_avatar_scheam = {
    body:{
        avatar
    }
}

// 文章分类验证对象
exports.cates_scheam = {
    body:{
        name,alias
    }
}

// 删除文章分类的验证对象
exports.delete_cate_scheam = {
    params:{
        id
    }
}

// 修改文章分类验证对象
exports.update_cate_scheam = {
    body:{
        id,name,alias
    }
}

// 发布文章的验证对象
exports.add_article_scheam = {
    body:{
        content:name,
        title:name,
        cate_id:id,
        author_id:id,
        state:id,
        cover_img:joi.string() // 暂时设置为string
    }
}
